﻿/*
攻击程度 
Time Limit:1000MS  Memory Limit:32768K


Description:
在游戏中经常需要对攻击程度进行计算。
攻击程度有一定概率，攻击伤害受到攻击力、攻击速度和倍击概率的影响。
比如两个人同是攻击力100，攻击速度同为0.5次/秒，而倍击概率一个为30%，一个为40%。
显而易见，倍击为40%的人攻击伤害大。现有一分钟攻击输出计算公式：
攻击输出 = 攻击力×60×攻击速度×(1+倍击概率）请你比较以下同攻击类型的一分钟攻击程度吧。 

Input:
先输入一个整数表示有几个人（若为0，则结束），
再输入几个数据（double型），第一个表示人名；第二个为攻击力（攻击力>0）；
第三个为攻击频率（即攻击速度）（>0）；第四个为倍击概率（0<=倍击概率<=1）。 
Output:
对每组数据，计算一分钟攻击程度，并从大到小输出，结果四舍五入保留1位小数，名字与攻击程度之间空一格。
每组结果之间空一行。 
Sample Input:
4
MK 35 0.35 0.45 
DH 50 0.5  0.3 
BM 52 0.45 0.5 
DK 38 0.3  0.2
0
Sample Output:
BM 2106.0
DH 1950.0
MK 1065.8
DK 820.8
*/
#include <iostream>
#include <vector>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;

struct Attack
{
	string name;
	double value;
public:
	Attack(string& name_, double damage_, double rate_, double possiblity_) : name(name_),
		value((damage_*60 * rate_*(1 + possiblity_)))
	{
	}
	friend ostream& operator <<(ostream& os, const Attack& attack)
	{
		os.precision(1);
		os << attack.name << " " << fixed << attack.value;
		return os;
	}
	friend bool compare(const Attack& atk1, const Attack& atk2)
	{
		if (atk1.value == atk2.value)
			return atk1.name > atk2.name;
		else
			return atk1.value > atk2.value;
	}
};
int main()
{
	for (unsigned n; cin>>n && n;)
	{
		vector<Attack> attacks;
		attacks.reserve(n);
		
		string name;
		double damage, rate, possibility;
		while (n--)
		{
			 cin>>name;
			 cin>>damage>>rate>>possibility;
			 attacks.push_back(Attack(name, damage, rate, possibility));
		}
		sort(attacks.begin(), attacks.end(), compare);
		copy(attacks.begin(), attacks.end(), ostream_iterator<Attack>(cout, "\n"));
		cout<<endl;
	}
	return EXIT_SUCCESS;
}